package com.niiwoo.civet.user.service;

import com.niiwoo.civet.user.dto.request.MarketingJPushRequestDTO;
import com.niiwoo.civet.user.dto.request.MarketingPushLetterRequestDTO;
import com.niiwoo.civet.user.dto.request.SearchUserLetterListRequestDTO;
import com.niiwoo.civet.user.dto.request.UserLetterRequestDTO;
import com.niiwoo.civet.user.dto.response.QueryUserLetterExtInfoResponseDTO;
import com.niiwoo.civet.user.dto.response.QueryUserLetterListResponseDTO;
import com.niiwoo.tripod.provider.dto.response.PageResponseDTO;

import java.util.List;

/**
 * 用户站内信与极光推送服务接口
 * @author xueyuke
 * @date 2017-12-16
 */
public interface UserLetterDubboService {
    /**
     * 用户站内信与极光推送
     * @param userLetterRequestDTO
     */
    void pushLetter(UserLetterRequestDTO userLetterRequestDTO);

    /**
     * 查询用户站内信列表
     * @param searchUserLetterListRequestDTO
     */
    PageResponseDTO<QueryUserLetterListResponseDTO> queryUserLetterList(SearchUserLetterListRequestDTO searchUserLetterListRequestDTO);

    /**
     * 查询用户站内信扩展信息
     * @param userId
     * @return
     */
    QueryUserLetterExtInfoResponseDTO queryUserLetterExtInfo(String userId);

    /**
     * 已读站内信
     * @param userLetterId
     */
    void readLetter(Long userLetterId);

    /**
     * 删除站内信
     * @param userLetterIdList
     */
    void deleteLetter(List<Long> userLetterIdList);

    /**
     * 清除小红点
     * @param userId
     */
    void cleanRedPoint(String userId);

    default void pushMarketingLetter(MarketingPushLetterRequestDTO userLetterRequestDTO){}

    default void pushMarketingJpush(MarketingJPushRequestDTO jPushRequestDTO){}
}
